home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vqimath.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  4KB  |  97 lines

  1. /*  VQImath.h
  2.  
  3.   vector management functions for data type "quad":
  4.   integer arithmetics and mathematics.
  5.  
  6.   Copyright (c) 1996-1999 by Martin Sander
  7.   All Rights Reserved.
  8. */
  9.  
  10. #ifndef __VQIMATH_H
  11. #define __VQIMATH_H
  12.  
  13. #if !defined( __VECLIB_H )
  14.    #include <VecLib.h>
  15. #endif
  16.  
  17.  
  18. #ifdef __cplusplus
  19.    extern "C" {
  20. #endif
  21.  
  22. /******************   Basic  Arithmetics   *************************/
  23.  
  24. void    __vf  VQI_neg( qiVector Y, qiVector X, ui size );
  25. void    __vf  VQI_abs( qiVector Y, qiVector X, ui size );
  26.  
  27. void    __vf  VQI_addC(  qiVector Y, qiVector X, ui size, quad C );
  28. void    __vf  VQI_subC(  qiVector Y, qiVector X, ui size, quad C );
  29. void    __vf  VQI_subrC( qiVector Y, qiVector X, ui size, quad C );
  30. void    __vf  VQI_mulC(  qiVector Y, qiVector X, ui size, quad C );
  31. void    __vf  VQI_divC(  qiVector Y, qiVector X, ui size, quad C );
  32. void    __vf  VQI_divrC( qiVector Y, qiVector X, ui size, quad C );
  33. void    __vf  VQI_modC(  qiVector Y, qiVector X, ui size, quad C );
  34. void    __vf  VQI_maxC(  qiVector Y, qiVector X, ui size, quad C );
  35. void    __vf  VQI_minC(  qiVector Y, qiVector X, ui size, quad C );
  36.  
  37. void    __vf  VQI_addV(  qiVector Z, qiVector X, qiVector Y, ui size );
  38. void    __vf  VQI_subV(  qiVector Z, qiVector X, qiVector Y, ui size );
  39. void    __vf  VQI_subrV( qiVector Z, qiVector X, qiVector Y, ui size );
  40. void    __vf  VQI_mulV(  qiVector Z, qiVector X, qiVector Y, ui size );
  41. void    __vf  VQI_divV(  qiVector Z, qiVector X, qiVector Y, ui size );
  42. void    __vf  VQI_divrV( qiVector Z, qiVector X, qiVector Y, ui size );
  43. void    __vf  VQI_modV(  qiVector Z, qiVector X, qiVector Y, ui size );
  44. void    __vf  VQI_maxV(  qiVector Z, qiVector X, qiVector Y, ui size );
  45. void    __vf  VQI_minV(  qiVector Z, qiVector X, qiVector Y, ui size );
  46.  
  47. /******************** Accumulation (Y += X) ******************************/
  48.  
  49. void __vf VQI_accV(   qiVector Y, qiVector  X, ui size );
  50. void __vf VQI_accVBI( qiVector Y, biVector  X, ui size );
  51. void __vf VQI_accVSI( qiVector Y, siVector  X, ui size );
  52. void __vf VQI_accVI(  qiVector Y, iVector   X, ui size );
  53. void __vf VQI_accVLI( qiVector Y, liVector  X, ui size );
  54. void __vf VQI_accVUB( qiVector Y, ubVector  X, ui size );
  55. void __vf VQI_accVUS( qiVector Y, usVector  X, ui size );
  56. void __vf VQI_accVU(  qiVector Y, uVector   X, ui size );
  57. void __vf VQI_accVUL( qiVector Y, ulVector  X, ui size );
  58. #if defined (V_HUGE)
  59.     #define VQI_accVUI  VQI_accVUL
  60. #else
  61.     #define VQI_accVUI  VQI_accVU
  62. #endif
  63.  
  64. /*****************   Bit-wise operations  *********************/
  65.  
  66. void    __vf  VQI_shl( qiVector Y, qiVector X, ui size, unsigned C );
  67. void    __vf  VQI_shr( qiVector Y, qiVector X, ui size, unsigned C );
  68.  
  69. void    __vf  VQI_and( qiVector Y, qiVector X, ui size, quad C );
  70. void    __vf  VQI_or(  qiVector Y, qiVector X, ui size, quad C );
  71. void    __vf  VQI_xor( qiVector Y, qiVector X, ui size, quad C );
  72. void    __vf  VQI_not( qiVector Y, qiVector X, ui size );
  73.  
  74. /************  Optical Density Y = log10( X0 / X ) *********************/
  75.  
  76. int  __vf VQI_ODtoF( fVector OD, qiVector X, qiVector X0, ui size );
  77. int  __vf VQI_ODtoD( dVector OD, qiVector X, qiVector X0, ui size );
  78. int  __vf VQI_ODtoFwDark( fVector OD, qiVector X, qiVector XDark,
  79.                           qiVector X0, qiVector X0Dark, ui size );
  80. int  __vf VQI_ODtoDwDark( dVector OD, qiVector X, qiVector XDark,
  81.                           qiVector X0, qiVector X0Dark, ui size );
  82. void __vf VQI_setODThresh( quad minX, quad minX0 );
  83. #ifdef __BORLANDC__   /* 80-bit reals supported ? */
  84. int  __vf VQI_ODtoE( eVector OD, qiVector X, qiVector X0, ui size );
  85. int  __vf VQI_ODtoEwDark( eVector OD, qiVector X, qiVector XDark,
  86.                           qiVector X0, qiVector X0Dark, ui size );
  87. #else
  88.     #define VQI_ODtoE      VQI_ODtoD
  89.     #define VQI_ODtoEwDark VQI_ODtoDwDark
  90. #endif
  91.  
  92. #ifdef __cplusplus
  93. }
  94. #endif
  95.  
  96. #endif   /*  __VQIMATH_H    */
  97.